'''
进程池：减少进程的创建和销毁的次数，提高系统效率。
适用于进程数较多或者进程数不确定的情况。
进程数较少且几乎确定则用普通的Process即可。
'''
from multiprocessing import Pool
import time

def worker(index):
    print("===>>%s worker run!" % index)
    time.sleep(2)
    print("===>>%s worker finished!" % index)

if __name__ == "__main__":
    # 创建进程池
    pool = Pool(3)
    for i in range(10):  # 超出3的需要排队。就像窗口办理业务一样，人多了，后面的人就要排号等待。
        pool.apply_async(worker, args=(i, ))  # apply_async使用非阻塞的进程执行方式
    # 关闭进程池
    pool.close()
    # 等待所有子进程结束后再结束主进程
    pool.join()
    print("===>> main Process completed!")